// Grunt 入口文件
// 用于定义一些需要Grunt自动执行的任务
//需要导出一个函数
//此函数接收一个grunt的形参,内部提供一些创建任务时用到的API
const sass = require('sass')
const loadGruntTasks = require('load-grunt-tasks')
module.exports = grunt => {
  grunt.registerTask('foo', () => {
    console.log('hello grunt')
  })
  grunt.registerTask('bar', '任务描述', () => {
    console.log('other task~')
  })
  // grunt.registerTask('default', '任务描述', () => {
  //   console.log('default task~')
  // })
  // grunt.registerTask('default', ['foo', 'bar'])
  grunt.registerTask('async-task', function () {
    const done = this.async()
    setTimeout(() => {
      console.log('async-task grunt~')
      done()
    }, 1000)
  })
  grunt.registerTask('bad', () => {
    console.log('bad working~')
    return false
  })
  grunt.registerTask('async-task-bad', function () {
    const done = this.async()
    setTimeout(() => {
      console.log('async-task-bad grunt~')
      done(false)
    }, 1000)
  })
  grunt.registerTask('default', ['foo','bad' ,'bar'])
  grunt.loadNpmTasks('grunt-sass')
  loadGruntTasks(grunt) //自动加载所有grunt插件
  grunt.initConfig({
    sass: {
      options: {
        sourceMap: true,
        implementation: sass
      },
      main: {
        files: {
          'dist/css/main.css': 'src/scss/main.scss'
        }
      }
    },
    babel: {
      options: {
        sourceMap: true,
        presets: ['@babel/preset-env']
      },
      main: {
        files: {
          'dist/js/app.js': 'src/js/app.js'
        }
      }
    },
    watch: {
      js: {
        files: ['src/js/*js'],
        tasks: ['babel']
      },
      css: {
        files: ['src/scss/*.scss'],
        tasks: ['sass']
      }
    }
  })
  grunt.registerTask('default', ['sass', 'babel', 'watch'])
}
